package com.example.springboot.mapper;

import com.example.springboot.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper

public interface UserMapper {
    @Insert("insert into `user` (username, password, name, phone, email, address, avatar) " +
            "values (#{username}, #{password}, #{name}, #{phone}, #{email}, #{address}, #{avatar})")
    void insert(User user);

    @Update("update `user` set username=#{username}, password=#{password}, name=#{name}, phone=#{phone}," +
            "email=#{email}, address=#{address}, avatar=#{avatar} where id=#{id}")
    void update(User user);


    @Delete("delete from `user` where id = #{id}")
    void delete(Integer id);

    @Select("select * from `user` order by id desc")
    List<User> selectAll();

    @Select("select * from `user` where id = #{id} order by id desc")
    User selectById(Integer id);

    @Select("select * from `user` where name = #{name} and username=#{username} order by id desc")
    List<User> selectByMore(@Param("name") String name,@Param("username") String username);

    @Select("select * from `user` where name like concat('%',#{name},'%') and username like concat('%',#{username},'%') order by id desc")
    List<User> selectByMo(String name, String username);

    @Select("select * from `user` where name like concat('%',#{name},'%') and username like concat('%',#{username},'%') " +
            "order by id desc limit #{skipNum}, #{pageSize}")
    List<User> selectByPage(@Param("skipNum") Integer skipNum, @Param("pageSize") Integer pageSize,
                            @Param("name") String name,@Param("username") String username);

    @Select("select count(id) from `user` where name like concat('%',#{name},'%') and username like concat('%',#{username},'%') " +
            "order by id desc")
    int selectCountByPage(@Param("name") String name,@Param("username") String username);
}

